package org.aiforum.web.intercept;

import org.aiforum.common.CacheContext;
import org.aiforum.common.UserContant;
import org.aiforum.domain.User;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;

/*
 * 登录认证拦截器 ,实现struts2拦截器
 */
public class LoginAuthIntercept  implements Interceptor{
    
	private static final long serialVersionUID = 1L;

	/****/
	public String intercept(ActionInvocation invocation) throws Exception {
		
		//获取请求的Action名称
		String actionName=invocation.getProxy().getActionName();
		if(actionName.equals("user_register")||actionName.equals("user_login")){
			return invocation.invoke();
		}
		//检查需要认证的Action请求
		if(actionName.indexOf("user_")>=0){
			/**这里的user_是页面提交按钮提交之后的url才含有user_才开始认证**/
			//获取登录认证信息
			User user=CacheContext.getCache(UserContant.CURRENT_USER, User.class);
			//如果认证成功则继续执行请求
			if(null!=user){
				return invocation.invoke();
			}else{
				//认证失败就重定向返回登录页
				return "login";
			}
		}
		return invocation.invoke();
	}
	
	
	public void destroy() {
		
	}

	public void init() {
		
	}


}
